package cn.tedu.scalaoop

/**
 * @author Amos
 * @date 2022/5/17
 */

class Person(val name: String, var age: Int, gender: String) {
  /*
  1)主构造器：直接在类名的后面，增加构造参数
  2) 主构造器中的三种参数修饰
    1) 无修饰，不能被访问和修改
    2) val修饰，可以访问但不能修改
    3) var修饰，可以访问也可以修改
  3) 辅助构造器：除了主构造器之外的构造器，都叫做辅助构造器
    1) 辅助构造器的名称都是this
    2) 辅助构造器中的第一句一定要调用主构造器,使用this调用
    3) 辅助构造器中，构造器参数不能被val或者var修饰
   */
  var address: String = ""

  // 定义无参的辅助构造器
  def this() {
    this("张飞", 22, "男")
    println("hello")
  }

  def this(name: String, age: Int, gender: String, address: String) {
    this(name, age, gender)
    this.address = address
  }

}

object PersonTest {
  def main(args: Array[String]): Unit = {
    val person = new Person("刘备", 22, "男")
    println(person.name, person.age)
    // 修改属性
    //    person.name="关羽"
    person.age = 24
    println(person.name, person.age)

    val person1 = new Person("貂蝉", 18, "女", "北京朝阳")
    println(person1.name, person1.address)
  }
}
